今天我要來介紹一些我覺得很有用的用法,可是不知道如何分類,所以統一在這邊分享
lambda可以用來宣告一個匿名函數,也可以想像成是宣告一個叫lambda的函數,他的用法很簡單,跟我們一般def宣告函數用法很像。
def lambda_func(a, b):
return a+b
print(lambda_func(1, 2))
#上面的函數等同於下面
c = lambda a, b: a+b
print(c(1, 2))
這個東西我覺得非常的棒,這個方法可以將我們輸入參數的型態,給定那個value輸入參數型態的預設值,簡單來說就是已經幫你在value插入空值,不是None哦,我們底下來看看範例:
from collections import defaultdict
b = defaultdict(list)
b["1"].append(("鐵", "人", "賽"))
print(b)
# defaultdict(<class 'list'>, {'1': [('鐵', '人', '賽')]})
像是我這邊我預設給list,我就會有一個{"1":[]}
這樣結構的資料,我們可以看到,他在我新增key的value,已經幫我新增我給定參數型態空值,像是這邊就是一個空list,dict就是空dict,這樣就有一個兩層的架構。
如果你以為這樣就叫非常的棒,那你就太天真了,時常我們要回傳資料的結構,長的各種奇形怪狀,dict包list,dict包dict再包list,各種巢狀結構的情況,這個時候我們可以加上,上面的匿名函數這樣做:
from collections import defaultdict
a = defaultdict(lambda :defaultdict(dict))
a["1"]["2"]["3"] = "ya"
print(b)
# defaultdict(<function <lambda> at 0x10fa7e4c0>, {'1': defaultdict(<class 'dict'>, {'2': {'3': 'ya'}})})
或是
from collections import defaultdict
a = defaultdict(lambda :defaultdict(lambda :defaultdict(list)))
a["1"]["2"]["3"].append("ya")
print(a)
# defaultdict(<function <lambda> at 0x108ac94c0>, {'1': defaultdict(<function <lambda>.<locals>.<lambda> at 0x108ac9a60>, {'2': defaultdict(<class 'list'>, {'3': ['ya']})})})
當然還有其他的寫法,我只是舉一種我比較常用的用法,明天我要來介紹map